import type { LoginSuccessResponse, UserInfoResponse } from './types/auth-responses'
import { http } from '@/http/http'
import { ContentTypeEnum } from '@/http/tools/enum'

/**
 * 发送手机验证码请求参数
 */
export interface SendSmsRequest {
  /** 手机号 */
  userInfo: string
  /** 短信类型 */
  smsmode: number
  /** 图片验证码校验key */
  checkKeyImg: number
  /** 图片验证码 */
  captchaImg: string
}

/**
 * 验证码登录请求参数
 */
export interface CaptchaLoginRequest {
  /** 手机号 */
  mobile: string
  /** 手机验证码 */
  captcha: string
  /** 图片验证码 */
  captchaImg: string
  /** 图片验证码校验key */
  checkKeyImg: number
}

/**
 * 账户密码登录请求参数
 */
export interface PasswordLoginRequest {
  /** 用户名 */
  username: string
  /** 密码 */
  password: string
  /** 验证码 */
  captcha: string
  /** 验证码校验key */
  checkKey: number
  /** 系统类型 */
  systemType: string
}

/**
 * 获取图片验证码
 * @param key 查询参数，必传
 * @returns 图片验证码信息
 */
export function getRandomImage(key: string) {
  const url = `/yngy-auth/login/randomImage?key=${key}`
  return http.post<string>(url, {}, null, {
    responseType: 'text',
    headers: {
      'Content-Type': ContentTypeEnum.FORM_URLENCODED,
    },
  })
}

/**
 * 发送手机验证码
 * @param data 请求参数
 * @returns 发送结果
 */
export function sendSmsCode(data: SendSmsRequest) {
  return http.post<any>('/yngy-auth/login/sendSmsPhoneAndCaptchaImg', data)
}

/**
 * 手机号验证码登录
 * @param data 登录请求参数
 * @returns 登录结果
 */
export function loginByPhone(data: CaptchaLoginRequest) {
  return http.post<LoginSuccessResponse>('/yngy-auth/login/loginByPhone', data)
}

/**
 * 账户密码登录
 * @param data 登录请求参数
 * @returns 登录结果
 */
export function loginByPassword(data: PasswordLoginRequest) {
  return http.post<LoginSuccessResponse>('/yngy-auth/login', data)
}

/**
 * 获取用户信息
 * @returns 用户信息
 */
export function getUserInfo() {
  return http.get<{ userInfo: UserInfoResponse }>('/yngy-user/sys/user/getCurrentUserInfo')
}
